with Ada.Text_IO, Ada.Integer_Text_IO;use Ada.Text_IO,Ada.Integer_Text_IO;
with Ada.Exceptions;use Ada.Exceptions;
with Interfaces.C;
with Interfaces.C.Strings;
use Interfaces.C;
use Interfaces.C.Strings;


package telFixe is
	
	task type telFixe is
		-- Permet de demander au standard d'ouvrir une communication avec un interlocuteur
		entry demanderCom(numAppele : in Integer);
		-- Attribu un numero au standard
		entry attribuerNumero(numero : in Integer);
		
		entry activerRepondeur;
		
		entry desactiverRepondeur;
		
		entry communiquer;
		
		entry configurerPourComm(canal : in Integer; numCorrespondant : in Integer);
 	end telFixe;
 	
 	-- Ensembles des telephones du reseau
	type telephones is array (1..5) of telFixe;
	tels : telephones;

	-- Permet d'appeler l'une des fonctions du standard
	function ouvrirCom(appelant : in Integer; appele : in Integer) return Integer;
	pragma import(C, ouvrirCom, "ouvrirCommunication");
	
	procedure activerRep(monNum : in Integer);
	pragma import(C, activerRep, "activerRepondeurTel");
	
	procedure desactiverRep(monNum : in Integer);
	pragma import(C, desactiverRep, "desactiverRepondeurTel");
	
	procedure abonnerFixe(numero : in Integer);
	pragma import(C, abonnerFixe, "abonnerFixe");
	
	procedure lockMutex(indice : in Integer);
	pragma import(C, lockMutex, "lockMutex");
	
	procedure unlockMutex2(indice : in Integer);
	pragma import(C, unlockMutex2, "unlockMutex2");
	
	-- Permet au standard d'appeler des procedures ada
	procedure lancerConvers(sender : in Integer; receiver : in Integer);
	pragma export(C, lancerConvers, "lancerConversation");
	
	procedure configurerCorrespondant(receiver : in Integer; canal : in Integer; numCorrespondant : in Integer);
	pragma export(C, configurerCorrespondant, "configReceiver");
	
end telFixe;